const requestBase = {
	index: '/api/tool/',
	upload:'/api/tool/',
	consumer:'/api/consumer/',
	sysAgreement:'/api/sysAgreement/',
	myInterface:'/api/myInterface/',
	sysClassify:'/api/sysClassify/',
	sysRotation:'/api/sysRotation/',
	conBankcard:'/api/conBankcard/',
	freeGoods:'/api/freeGoods/',
}

const methods = {
	get: {},

	post: {
		//上传
		upload: [
			'fileUpLoad',//上传图片
		],
		// 用户管理
		consumer:[
			'register',// 用户注册
			'login',// 用户登录
			'forgetPwd',// 忘记密码
			'updateCArae',// 修改用户地区
			'updateCImg',// 修改用户头像
			'updateCName',// 修改用户昵称
		],
		// 协议信息
		sysAgreement:[
			'agreementInfo'
		],
		//验证码
		index:[
			'verificationCode',
		],
		// 我的界面管理
		myInterface:[
			'sysContactWayInfo',// 联系我们展示
			'addUAttestation',// 用户去实名认证
			'addBAttestation',// 商家去实名认证
			'uAttestation',// 用户是否认证过
			'addFeedback',// 意见反馈
			'numberWarehouse',// 数字化仓库展示
		],
		// 商品分类管理
		sysClassify:[
			'TopClassify',// 一级分类
			'TowClassify',// 二级分类,
			'classifyGoods',// 分类查询商品
		],
		// 轮播图
		sysRotation:[
			'rotationInfo',// 轮播图查询
			'rotationDetails',// 轮播图详情
		],
		// 用户银行管理
		conBankcard:[
			'addConBankcard',// 用户添加银行卡,
			'conBankcardInfo',//用户银行卡展示。
			'delConBankcard',//银行卡删除
		],
		// 自由市场商品管理
		freeGoods:[
			'myRelease',// 我的发布
			'lowerShelf',//商品下架操作
			'upperShelf',// 商品上架操作,
			'editGoods',// 编辑商品（展示商品的状态）
			'updateGoods',// 编辑确认,
			'delGoods',// 删除商品
			'addFreeGoods',// 商品发布
		]
		
	}
}


/**
 * @param {obj} methods 请求方法配置对象
 * @param {obj} requestBase 基础请求头配置对象
 * @param {obj} 需要被挂载的Vue实例
 */
function initRequset(methods, requestBase, vm) {
	vm.$u.api = {}
	for (let method in methods) { //分类get 和 post 方法
		const category = methods[method] //category请求分类
		for (let requests in category) { //requests 每个分类中的具体请求模块
			const reqList = category[requests] //reqList 每个模块中的具体请求方法
			if(requests === 'upload'){
				reqList.forEach(item => {
					vm.$u.api[item] = vm.$u.baseUrl + requestBase[requests] + item
				})
				continue
			}
			reqList.forEach(value => {
				vm.$u.api[value] = (params = {}) => vm.$u[method](requestBase[requests] + value, params);
			})
		}
	}
}

const install = (Vue, vm) => {
	initRequset(methods, requestBase, vm)
}

export default {
	install
}
